home *** CD-ROM | disk | FTP | other *** search
/ Sports Illustrated for Kids - Awesome Athletes! / Sports Illustrated for Kids - Awesome Athletes!.iso / th.dir / 00005_QTVR-MAC.ls < prev    next >
Encoding:
Text File  |  1996-04-18  |  9.6 KB  |  314 lines

  1. on MAC_initVR
  2.   global gPanoMovieID, gNavMovieID, gPathName, gLastTimeRollover, gPanoFrame, gPanoCallBackFactory, gTestCallbackFactory, gQTVRCallBackFactory
  3.   set gPanoMovieID to EMPTY
  4.   set gNavMovieID to EMPTY
  5.   set gPathName to EMPTY
  6.   set gLastTimeRollover to 0
  7.   set gPanoFrame to EMPTY
  8.   openXLib("QuickTime VR XCMDs")
  9.   RegisterComponent(the pathName & "QuickTime VR Components", EMPTY)
  10.   set gPanoCallBackFactory to thCallbacks(mnew)
  11.   set gQTVRCallBackFactory to CallBackTracer(mnew)
  12.   setCallBack(#PanoMovie, gQTVRCallBackFactory)
  13. end
  14.  
  15. on MAC_cleanUpVR
  16.   global gPanoCallBackFactory, gTestCallbackFactory
  17.   ClosePanoMovie()
  18.   CloseNavMovie()
  19.   closeXLib("QuickTime VR XCMDs")
  20.   if objectp(gPanoCallBackFactory) then
  21.     gPanoCallBackFactory(mdispose)
  22.   end if
  23. end
  24.  
  25. on MAC_OpenNavMovie pFilename, pSpriteNum, pShowOnOpen
  26.   global gNavMovieID
  27.   CloseNavMovie()
  28.   set gNavMovieID to NavMovie("openMovie", "Direct", pFilename, the left of sprite pSpriteNum & "," & the top of sprite pSpriteNum, "ShowPoster", "Invisible")
  29.   if gNavMovieID contains "error" then
  30.     put gNavMovieID
  31.     set gNavMovieID to EMPTY
  32.     beep()
  33.     exit
  34.   end if
  35.   if pShowOnOpen then
  36.     NavMovie("Direct", gNavMovieID, "update")
  37.   end if
  38. end
  39.  
  40. on MAC_ShowNavMovie
  41.   global gNavMovieID
  42.   if gNavMovieID <> EMPTY then
  43.     NavMovie("Direct", gNavMovieID, "update")
  44.   end if
  45. end
  46.  
  47. on MAC_ZoomNavMovie pStartZoomRect, pSkipFirstFrame, pClipRect
  48.   global gNavMovieID
  49.   if gNavMovieID <> EMPTY then
  50.     set tCommand to "ZoomOutMovie" && QUOTE & pStartZoomRect & QUOTE
  51.     if not voidp(pSkipFirstFrame) then
  52.       set tCommand to tCommand & "," & pSkipFirstFrame
  53.     end if
  54.     if not voidp(pClipRect) then
  55.       set tCommand to tCommand & "," & QUOTE & pClipRect & QUOTE
  56.     end if
  57.     NavMovie("Direct", gNavMovieID, tCommand)
  58.     NavMovie("Direct", gNavMovieID, "idle")
  59.   end if
  60. end
  61.  
  62. on MAC_SetNavMovieView pHPan, pVPan
  63.   global gNavMovieID
  64.   if gNavMovieID <> EMPTY then
  65.     NavMovie("Direct", gNavMovieID, "set", "hPanAngle", pHPan)
  66.     NavMovie("Direct", gNavMovieID, "set", "vPanAngle", pVPan)
  67.   end if
  68. end
  69.  
  70. on MAC_CloseNavMovie
  71.   global gNavMovieID
  72.   if gNavMovieID <> EMPTY then
  73.     NavMovie("Direct", gNavMovieID, "dispose")
  74.     set gNavMovieID to EMPTY
  75.   end if
  76. end
  77.  
  78. on MAC_NavFrameScript pSpriteNum
  79.   global gNavMovieID
  80.   if (gNavMovieID <> EMPTY) and (RunningInForeground() = "true") then
  81.     if rollOver(pSpriteNum) then
  82.       NavMovie("Direct", gNavMovieID, "mouseOver")
  83.       cursor(200)
  84.       cursor(-1)
  85.     else
  86.       NavMovie("Direct", gNavMovieID, "idle")
  87.     end if
  88.   end if
  89. end
  90.  
  91. on MAC_OpenPanoMovie pFilename, pSpriteNum, pShowOnOpen
  92.   global gPanoMovieID, gPathName, gPanoCallBackFactory
  93.   ClosePanoMovie()
  94.   set tPanoRect to the left of sprite pSpriteNum & "," & the top of sprite pSpriteNum & "," & the right of sprite pSpriteNum & "," & the bottom of sprite pSpriteNum
  95.   set gPanoMovieID to PanoMovie("openMovie", "Direct", pFilename, tPanoRect)
  96.   if gPanoMovieID contains "error" then
  97.     put gPanoMovieID
  98.     set gPanoMovieID to EMPTY
  99.     beep()
  100.     exit
  101.   end if
  102.   set gPathName to ExtractPathName(pFilename)
  103.   InitPanoCallbacks()
  104.   if pShowOnOpen then
  105.     PanoMovie("Direct", gPanoMovieID, "update")
  106.   end if
  107. end
  108.  
  109. on MAC_InitPanoCallbacks
  110.   global gPanoMovieID
  111.   if gPanoMovieID <> EMPTY then
  112.     PanoMovie("Direct", gPanoMovieID, "set", "mouseOverHandler", EMPTY)
  113.     PanoMovie("Direct", gPanoMovieID, "set", "rolloverHotSpotHandler", "rolloverHandler")
  114.     PanoMovie("Direct", gPanoMovieID, "set", "mouseDownHandler", EMPTY)
  115.     PanoMovie("Direct", gPanoMovieID, "set", "panZoomStartHandler", EMPTY)
  116.     PanoMovie("Direct", gPanoMovieID, "set", "mouseStillDownHandler", EMPTY)
  117.     PanoMovie("Direct", gPanoMovieID, "set", "nodeLeaveHandler", EMPTY)
  118.   end if
  119. end
  120.  
  121. on MAC_ShowPanoMovie pQuality
  122.   global gPanoMovieID
  123.   if gPanoMovieID <> EMPTY then
  124.     if not voidp(pQuality) then
  125.       PanoMovie("Direct", gPanoMovieID, "set", "quality", pQuality)
  126.     end if
  127.     PanoMovie("Direct", gPanoMovieID, "update")
  128.   end if
  129. end
  130.  
  131. on MAC_SetPanoNode pNodeID, pUpdate, pQuality
  132.   global gPanoMovieID
  133.   if gPanoMovieID <> EMPTY then
  134.     PanoMovie("Direct", gPanoMovieID, "set", "nodeID", pNodeID)
  135.     if not voidp(pQuality) then
  136.       PanoMovie("Direct", gPanoMovieID, "set", "quality", pQuality)
  137.     end if
  138.     if pUpdate then
  139.       PanoMovie("Direct", gPanoMovieID, "Update")
  140.     end if
  141.   end if
  142. end
  143.  
  144. on MAC_SwingPanoMovie pHPan, pVPan, pZoom, pSwingSpeed, pSwingQuality, pFinalQuality
  145.   global gPanoMovieID
  146.   if gPanoMovieID <> EMPTY then
  147.     PanoMovie("Direct", gPanoMovieID, "set", "zoomAngle", pZoom)
  148.     PanoMovie("Direct", gPanoMovieID, "set", "vPanAngle", pVPan)
  149.     PanoMovie("Direct", gPanoMovieID, "set", "hPanAngle", pHPan)
  150.     PanoMovie("Direct", gPanoMovieID, "set", "quality", pSwingQuality)
  151.     PanoMovie("Direct", gPanoMovieID, "set", "transitionMode", "swing")
  152.     PanoMovie("Direct", gPanoMovieID, "set", "transitionSpeed", pSwingSpeed)
  153.     PanoMovie("Direct", gPanoMovieID, "update")
  154.     PanoMovie("Direct", gPanoMovieID, "set", "transitionMode", "normal")
  155.     if pFinalQuality <> pSwingQuality then
  156.       PanoMovie("Direct", gPanoMovieID, "set", "quality", pFinalQuality)
  157.       PanoMovie("Direct", gPanoMovieID, "update")
  158.     end if
  159.   end if
  160. end
  161.  
  162. on MAC_CollapsePanoMovie
  163.   global gPanoMovieID
  164.   if gPanoMovieID <> EMPTY then
  165.     PanoMovie("Direct", gPanoMovieID, "CollapseToHotSpotRgn")
  166.   end if
  167. end
  168.  
  169. on MAC_SetPanoMovieView pHPan, pVPan, pZoom, pQuality
  170.   global gPanoMovieID
  171.   if gPanoMovieID <> EMPTY then
  172.     PanoMovie("Direct", gPanoMovieID, "set", "zoomAngle", pZoom)
  173.     PanoMovie("Direct", gPanoMovieID, "set", "vPanAngle", pVPan)
  174.     PanoMovie("Direct", gPanoMovieID, "set", "hPanAngle", pHPan)
  175.     if not voidp(pQuality) then
  176.       PanoMovie("Direct", gPanoMovieID, "set", "quality", pQuality)
  177.     end if
  178.     PanoMovie("Direct", gPanoMovieID, "update")
  179.   end if
  180. end
  181.  
  182. on MAC_ClosePanoMovie
  183.   global gPanoMovieID
  184.   if gPanoMovieID <> EMPTY then
  185.     PanoMovie("Direct", gPanoMovieID, "dispose")
  186.     set gPanoMovieID to EMPTY
  187.   end if
  188. end
  189.  
  190. on MAC_PanoFrameScript pSpriteNum
  191.   global gLastTimeRollover, gPanoMovieID, gLastPanoMovieData, gPathName, gNavMovieID, gPanoFrame
  192.   if rollOver(pSpriteNum) then
  193.     if (gPanoMovieID <> EMPTY) and (RunningInForeground() = "true") then
  194.       PanoMovie("Direct", gPanoMovieID, "mouseOver")
  195.       set tMouseOverResult to the result
  196.       if tMouseOverResult <> 0 then
  197.         set tAction to item 1 of tMouseOverResult
  198.         if tAction = "jump" then
  199.           put item 2 of tMouseOverResult into field "Current Node ID"
  200.         else
  201.           if tAction = "stil" then
  202.             put item 2 of tMouseOverResult into field "Current Hot Spot ID"
  203.           else
  204.             if tAction = "navg" then
  205.               set tHotSpotID to item 2 of tMouseOverResult
  206.               put tHotSpotID into field "Current Hot Spot ID"
  207.               set tStartZoom to PanoMovie("Direct", gPanoMovieID, "get", "navgZoomRect")
  208.               set tViewAngles to PanoMovie("Direct", gPanoMovieID, "get", "navgViewAngles")
  209.               set tFileName to PanoMovie("Direct", gPanoMovieID, "get", "hotSpotName")
  210.               CollapsePanoMovie()
  211.               OpenNavMovie(gPathName & ":" & tFileName, 2, 0)
  212.               if gNavMovieID <> EMPTY then
  213.                 set gPanoFrame to marker(0)
  214.                 go("Object From Pano")
  215.                 SetNavMovieView(item 1 of tViewAngles, item 2 of tViewAngles)
  216.                 set tClipRect to the left of sprite 2 & "," & the top of sprite 2 & "," & the right of sprite 2 & "," & the bottom of sprite 2
  217.                 ZoomNavMovie(tStartZoom, "true", tClipRect)
  218.               else
  219.                 PanoMovie("Direct", gPanoMovieID, "update")
  220.               end if
  221.             else
  222.               if tAction = "misc" then
  223.                 put item 2 of tMouseOverResult into field "Current Hot Spot ID"
  224.               else
  225.                 if tAction = "undf" then
  226.                   hitHotspot(item 2 of tMouseOverResult)
  227.                 else
  228.                   if tAction = "pan " then
  229.                   end if
  230.                 end if
  231.               end if
  232.             end if
  233.           end if
  234.         end if
  235.         set gLastTimeRollover to 1
  236.       else
  237.         if rollOver(pSpriteNum) then
  238.           set gLastTimeRollover to 1
  239.         else
  240.           cursor(200)
  241.           cursor(-1)
  242.           set gLastTimeRollover to 0
  243.         end if
  244.       end if
  245.     end if
  246.   else
  247.     if gLastTimeRollover then
  248.       cursor(200)
  249.       cursor(-1)
  250.       set gLastTimeRollover to 0
  251.       if gPanoMovieID <> EMPTY then
  252.         PanoMovie("Direct", gPanoMovieID, "idle")
  253.       end if
  254.     end if
  255.   end if
  256. end
  257.  
  258. on MAC_PanoGetHPanAngle
  259.   global gPanoMovieID
  260.   PanoMovie("Direct", gPanoMovieID, "get", "hPanAngle")
  261.   put the result
  262.   return value(the result)
  263. end
  264.  
  265. on MAC_PanoGetVPanAngle
  266.   global gPanoMovieID
  267.   PanoMovie("Direct", gPanoMovieID, "get", "vPanAngle")
  268.   return value(the result)
  269. end
  270.  
  271. on MAC_PanoGetZoomAngle
  272.   global gPanoMovieID
  273.   PanoMovie("Direct", gPanoMovieID, "get", "zoomAngle")
  274.   return value(the result)
  275. end
  276.  
  277. on MAC_ExtractPathName pPathName
  278.   set tDelimiter to ":"
  279.   if pPathName contains tDelimiter then
  280.     set tCharPos to length(pPathName)
  281.     repeat while tCharPos >= 1
  282.       if char tCharPos of pPathName = tDelimiter then
  283.         return char 1 to tCharPos - 1 of pPathName
  284.       end if
  285.       set tCharPos to tCharPos - 1
  286.     end repeat
  287.     return EMPTY
  288.   else
  289.     return EMPTY
  290.   end if
  291. end
  292.  
  293. factory CallBackTracer
  294. method mnew
  295.  
  296. method mEvalExpr pExpr
  297.  
  298. method mSendHCMessage pMessage
  299.  
  300. method mSendCardMessage pMessage
  301.   do(pMessage)
  302.  
  303. method mGetFieldByName pCard, pName
  304.  
  305. method mGetFieldByNum pCard, pNum
  306.  
  307. method mGetFieldByID pCard, pID
  308.  
  309. method mSetFieldByName pCard, pName, pValue
  310.  
  311. method mSetFieldByNum pCard, pNum, pValue
  312.  
  313. method mSetFieldByID pCard, pID, pValue
  314.